home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / unixSyscall / RCS / sethostname.c,v < prev    next >
Text File  |  1992-06-16  |  2KB  |  101 lines

  1. head     1.1;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.1
  10. date     92.06.16.11.21.13;  author jhh;  state Exp;
  11. branches ;
  12. next     ;
  13.  
  14.  
  15. desc
  16. @@
  17.  
  18.  
  19.  
  20. 1.1
  21. log
  22. @Initial revision
  23. @
  24. text
  25. @/* 
  26.  * sethostname.c --
  27.  *
  28.  *    Procedure to simulate Unix sethostname system call
  29.  *
  30.  * Copyright 1992 Regents of the University of California
  31.  * Permission to use, copy, modify, and distribute this
  32.  * software and its documentation for any purpose and without
  33.  * fee is hereby granted, provided that this copyright
  34.  * notice appears in all copies.  The University of California
  35.  * makes no representations about the suitability of this
  36.  * software for any purpose.  It is provided "as is" without
  37.  * express or implied warranty.
  38.  */
  39.  
  40. #ifndef lint
  41. static char rcsid[] = "$Header: /sprite/lib/forms/RCS/proto.c,v 1.6 92/03/02 15:29:56 bmiller Exp $ SPRITE (Berkeley)";
  42. #endif /* not lint */
  43.  
  44. #include <sys/param.h>
  45. #include <sys/errno.h>
  46. #include "compatInt.h"
  47.  
  48. /*
  49.  *----------------------------------------------------------------------
  50.  *
  51.  * sethostname --
  52.  *
  53.  *    Sets the host name. 
  54.  *
  55.  * Results:
  56.  *    0 is returned if the call was completed successfully.
  57.  *    Otherwise, -1 is returned and errno gives more information.
  58.  *
  59.  * Side effects:
  60.  *    None.
  61.  *
  62.  *----------------------------------------------------------------------
  63.  */
  64.  
  65. int
  66. sethostname(name, namelen)
  67.     char    *name;        /* New name of host. */
  68.     int        namelen;    /* Length of name. */
  69. {
  70.     char        tmp[MAXHOSTNAMELEN];
  71.     ReturnStatus    status;
  72.  
  73.     if (namelen > MAXHOSTNAMELEN) {
  74.     errno = EINVAL;
  75.     return UNIX_ERROR;
  76.     }
  77.     /*
  78.      * We allow names to lacking a terminating null character because the
  79.      * Unix man pages are ambiguous as to whether it is needed.
  80.      */
  81.     if (name[namelen-1] != '\0') {
  82.     if (namelen < MAXHOSTNAMELEN) {
  83.         if (name[namelen] != '\0') {
  84.         bcopy(name, tmp, namelen);
  85.         tmp[namelen] = '\0';
  86.         name = tmp;
  87.         }
  88.     } else {
  89.         errno = EINVAL;
  90.         return UNIX_ERROR;
  91.     }
  92.     }
  93.     status = Sys_SetHostName(name);
  94.     if (status != SUCCESS) {
  95.     errno = Compat_MapCode(status);
  96.     return UNIX_ERROR;
  97.     }
  98.     return 0;
  99. }
  100. @
  101.